package co.edu.uniquindio.ondas.daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import co.edu.uniquindio.ondas.entidades.Zona;
/**
 * @version 1.0
 * @author Javier
 * 
 * Session Bean implementation class ZonaDAO
 * 
 * @param Zona hace referencia a la entidad que va hacer manejada por el DAO.
 * @param Long especifica cual es el tipo de dato de la llave primaria de la entidad. 
 */
public class ZonaDAO extends DAO<Zona, Long> {

	/**
	 * Manejador de persistencia
	 */
	EntityManager entityManager;
	public ZonaDAO(EntityManager entityManager) {
		super(entityManager);
		this.entityManager=entityManager;
		// TODO Auto-generated constructor stub
	}

	@Override
	protected Class<Zona> getEntityClass() {
		// TODO Auto-generated method stub
		return Zona.class;
	}
	/**
	 * Metodo que permite consultar y obtener una Lista  de nombre de Zonas
	 * @return Listado de Nombres de Zona
	 */
	@SuppressWarnings("unchecked")
	public List<String> getListaZonas()
	{
		Query query=entityManager.createQuery("select Z.nombre from Zona Z");
		return query.getResultList();
	}
	
	/**
	 * Metodo que permite consultar y obtener una Zona dado el nombre
	 * @param valor
	 * @return  Zona
	 */
	public Zona getZona(String valor)
	{
		Query query=entityManager.createQuery("select z from Zona z where z.nombre=:parametro");
		query.setParameter("parametro", valor);
		return (Zona) query.getSingleResult();
	}
	/**
	 * Metodo que permite consultar y obtener la identificacion de una Zona dado el nombre
	 * @param valor
	 * @return Identificacion de la Zona
	 */
	public long getZonaId(String valor)
	{
		Query query=entityManager.createQuery("select z.identificacion from Zona z where z.nombre=:parametro");
		query.setParameter("parametro", valor);
		return (Long) query.getSingleResult();
	}
}
